#include "shapetool.h"
#include "../shape/note.h"
#include "../shape/action.h"
#include "../shape/decision.h"
#include "../shape/initialnode.h"
#include "../shape/finalnode.h"
#include "selectiontool.h"
#include "customgraphicsscene.h"

ShapeSceneTool::ShapeSceneTool (CustomGraphicsScene::EditorTool oldtool)
	: _oldtool(oldtool)
{
}

bool ShapeSceneTool::mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event)
{
	return false;
}

bool ShapeSceneTool::mouseMoveEvent (QGraphicsSceneMouseEvent *event)
{
	return false;
}

bool ShapeSceneTool::mousePressEvent (QGraphicsSceneMouseEvent *event)
{
	/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	 * Опять этот свитч, но теперь он не разрастется                       *
	 * А если и будет какая-то потребность, я могу всегда вынести какую-то *
	 * функциональность в отдельный класс в крайнем случае                 *
	 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
	if (event->button()==Qt::LeftButton)
	{
		scene()->notifyStateChangeByUser();
		switch(_oldtool)
		{
			case CustomGraphicsScene::ACTION:
				scene()->addShape(new ActionShape(event->scenePos()));
				break;
			case CustomGraphicsScene::NOTE:
				scene()->addShape(new NoteShape(event->scenePos()));
				break;
			case CustomGraphicsScene::DECISION:
				scene()->addShape(new DecisionShape(event->scenePos()));
				break;
			case CustomGraphicsScene::INITIAL:
				scene()->addShape(new InitialNodeShape(event->scenePos()));
				break;
			case CustomGraphicsScene::FINAL:
				scene()->addShape(new FinalNodeShape(event->scenePos()));
				break;
			default:
				// really, it's fail
				break;
		}
	}
	return true;
}

bool ShapeSceneTool::mouseReleaseEvent (QGraphicsSceneMouseEvent *event)
{
	scene()->setTool(CustomGraphicsScene::SELECTION);//new SelectionSceneTool()); // на будущее
	return true;
}
